const { app, BrowserWindow, ipcMain } = require('electron')
const path = require('node:path')

const createWindow = () => {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, '/src/main/preload.js'),
    },
  })
  win.loadFile('./src/renderer/index.html')
  // win.loadURL('http://localhost:7897/')
  win.webContents.openDevTools()
}

app.whenReady().then(() => {
  createWindow()
  printInit()
})

const printInit = () => {
  /**主窗体的win对象 */
  ipcMain.on('toPrint', async (e, url) => {
    // 创建一个新的隐藏窗口，用于打印
    let printWindow = new BrowserWindow({
      show: false,
      width: 1000,
      height: 100,
      frame: false, // 禁用窗口框架，移除菜单和标题栏
      contextIsolation: false,
      enableRemoteModule: true,
      nodeIntegration: true,
      webSecurity: false,
    })
    // 指定窗口加载的页面
    printWindow.loadURL(url)
    // 导航完成时触发，即选项卡的旋转器将停止旋转，并指派onload事件后。
    printWindow.webContents.on('did-finish-load', async () => {
      // 获取打印机列表
      const list = await printWindow.webContents.getPrintersAsync()
      // console.log('list', list)
      if (list && list.length > 0) {
        // 获取活跃打印机的名称
        const deviceName = list.find((err) => err.isDefault).name
        console.log('deviceName', deviceName)
        // 进行打印
        // silent:true 静默打印
        // deviceName 指定打印机名称

        printWindow.webContents.print({ deviceName, silent: true }, () => {
          printWindow.close()
        })
        // 关闭窗口
      } else {
        printWindow.close()
      }

      // printWindow.close()
    })
  })
}
